Transmission of constant-bit-rate (CBR) traffic, such as voice or any other application requiring real-time presentation, over a data network may be adversely affected by variable delays, or jitter, of data packet transmission since voice or CBR traffic cannot tolerate variable delays, or jitter. We use the term “data packet” to include cells in ATM (Asynchronous Transfer Mode) networks, packets in IP (Internet Protocol) networks or message units in any other data networks, but in all cases it carries voice or some other CBR traffic as the payload. It is to be understood that the term “voice” includes pure voice or some other CBR application that cannot tolerate delay jitter. The varying latency or jitter is typically managed in a data network with a de-jitter buffer at the receiving end. As data packets are received at varying latencies at the de-jitter buffer, the buffer may wait a predetermined period of time before releasing the data packets. The amount of wait is such that the successive data packets are released strictly periodically thereby eliminating jitter in the output stream and preserving the quality of voice transmission. The amount of wait varies from packet to packet (a packet experiencing a longer delay in the network experiences a shorter wait at the de-jitter buffer and vice versa but the total voice-path delay which is the sum of the network delay and the de-jitter buffer delay has to remain constant). The maximum amount of wait experienced by a packet in the de-jitter buffer is defined as the depth of the de-jitter buffer. Clearly, this is also the de-jitter buffer delay experienced by a packet that has the minimum network delay. In this invention we deal with three types of delays, network delay, de-jitter buffer delay and the voice-path delay which is the sum of the first two. Often we will use just the term “delay” to imply network delay. If the depth of the de-jitter buffer is small, then the total voice-path delay of packet transmission is minimized but the packet loss probability is great. Conversely, if the depth of the de-jitter buffer is large, then the voice-path delay is large but the packet loss probability is low. Traditionally, it has been difficult striking the proper balance between de-jitter buffer depths being large enough to prevent data loss but not too large as to cause undesired delays.
In the prior art, adaptive de-jitter buffers utilize a predetermined value for the initial depth and a predetermined value for the rate of change of the depth of the de-jitter buffer for each call. It is desirable to adaptively change the depth of the de-jitter buffer to track the changing packet delay behavior, but it is undesirable to change the depth too often since each such change may cause a disruption in voice quality. For this reason typically there are two depth parameters. The first one is the value of depth that is most optimal for the de-jitter buffer for any given data packet. This depth value is referred to as the ideal_depth and it changes dynamically with the arrival of every data packet. The second one is the present depth value of the de-jitter buffer at a given point in time and represents the actual current depth of the de-jitter buffer. This value is referred to as the realized_depth or the actual depth used in the de-jitter buffer. Typically, this value is changed less frequently than the ideal_depth. Specifically, the realized_depth may be set to the ideal_depth at the beginning of a call or at the beginning of a talk-spurt (at which time there is no disruption in voice quality) and subsequently the realized_depth is set to the ideal_depth (with some disruption in voice quality) only when they have become significantly different from each other. In the rest of this document when we use the term “depth” we mean the first kind or the “ideal_depth”. Since in the prior art the initial depth and rate of change of the depth is predetermined, the de-jitter buffer may not efficiently anticipate the actual optimal depth for a given voice traffic stream. Many variables may affect data packet jitter. The prior art adaptive de-jitter buffers do not take many of these factors into consideration in an adaptive process and hence may not provide the optimal depth for a particular call such that delays and data loss are not excessive.
Thus, there exists a need in the art for a method and apparatus for providing an optimal initial depth for a buffer in a network such that jitter of data packets in a particular call is managed optimally.
There also exists a need in the art for a method and apparatus for providing an optimal rate of change of depth of a buffer in a network such that jitter of data packets in a particular call is managed optimally.